package com.softer.wxzj.mapper;

import com.softer.wxzj.entity.BaseCellInfo;
import com.softer.wxzj.mapper.base.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public interface BaseCellInfoMapper extends BaseMapper<BaseCellInfo> {
    List<BaseCellInfo> getAllListByBuildToTransform(String buildNo);

    List<BaseCellInfo> getCellTypeByBuildToTransform(String buildNo);

    List<BaseCellInfo> getListByBuildToTransform(String buildNo);

    /**
     * 新增或替换
     *
     * @param baseCellInfo
     * @return
     */
    int replace(BaseCellInfo baseCellInfo);

    /**
     * 新增或修改
     *
     * @param baseCellInfo
     * @return
     */
    int insertOrUpdate(BaseCellInfo baseCellInfo);

    /**
     * 根据自然懂编号查询单元列表   用来填充下拉框
     *
     * @param buildNo
     * @return
     */
    List<Map<String, String>> getCellListByBuildNo(@Param("buildNo") String buildNo);


    /**
     * 查询单元类型
     *
     * @param buildNo
     * @return
     */
    List<BaseCellInfo> selectCellType(String buildNo);

    /**
     * 单元列表
     *
     * @param list
     * @param buildNo
     * @return
     */
    List<BaseCellInfo> getInfoList(@Param("list") String list, @Param("buildNo") String buildNo);

    BaseCellInfo getInfoById(String id);

    /**
     * 查询单个信息
     *
     * @param id
     * @return
     */
    BaseCellInfo getInfoListByBuildNo(String id);

    /**
     * 查看最大的单元号
     *
     * @param cellNo
     * @return
     */
    BaseCellInfo selectMaxByCellNo(String cellNo);

    /**
     * 通过自然幢查询单元
     *
     * @param buildId
     * @return
     */
    List<String> selectCellByBuild(String buildId);

    /**
     * 通过单元类型查询出单元id
     */
    List<BaseCellInfo> selectCellIdByType(String buildNo);

    /**
     * 通过自然幢查询下边有没有
     *
     * @param buildNo
     * @return
     */
    int selectCountByBuildNo(String buildNo);

    /**
     * 查询最大的单元号
     *
     * @param buildId
     * @return
     */
    String selectCellNo(String buildId);

    List<BaseCellInfo> getListAndReq(BaseCellInfo baseCellInfo);

    /**
     * 查询单元最最大值
     *
     * @param id
     * @return
     */
    int selectMaxByCellFloor(String id);

    /**
     * 删除修改状态
     *
     * @param id
     * @return
     */
    int updateState(String id);

    /**
     * 根据自然幢ID和单元名称查询单元ID
     *
     * @param cellName 单元名称
     * @param buildId  自然幢ID
     * @param buildId  单元性质（住宅，商铺，地下室等，见字典）
     * @return 单元ID
     */
    String getInfoByName(@Param("cellName")String cellName, @Param("buildId")String buildId, @Param("cellType")String cellType);
}
